/*
 * Classe que montra apenas uma informacao ao usuario
 * Uma informação eh diferente de uma confirmacao
 * Exemplos:    Sua sessao expirou. Faca novamente o login.
 *              Sua senha expira em X dias.
 */

package br.uniceub.fsw.util;

import java.util.ArrayList;

/**
 *<p align='justify'>
 * Classe que trata das mensagem de informacao
 * a serem exibidas ao usuario. Note os dois construtores:
 * é possível 'criar' uma nova mensagem de informacao ao usuario
 * passando como parametro um
 * objeto String ou <i>setando</i> a descricao da informacao.
 * <br/>
 * Exemplos:<br/>
 *     
 * InformacaoVO info = new InformacaoVO("Minha info."); -> Usando o método construtor
 * 
 * <br/>OU<br/>
 * 
 * InformacaoVO info = new InformacaoVO(); -> Usando o método <i>set</i><br/>
 * info.setDsInformacao("Minha info.");
 * </p>
 * 
 * @author sergiofernandomuniz
 * @version 1.0
 * @see BaseFacade, TratamentoErros, Validacao.
 * 
 */
public class InformacaoVO {
    
    private String dsInformacao;
    
     /**
     * @param Mensagem de informacao.
     * @return Objeto InformacaoVO com a mensagem passada
     */
    
    public InformacaoVO(String mensagemDeInformacao){

        if(!InformacaoVO.verificaSeInformacaoEstaNulaOuVazia(dsInformacao)){
         
            this.setDsInformacao(mensagemDeInformacao);

        }
        
    }
    
    public InformacaoVO(){
        
        
        
    }
    
    /**
    * @param Mensagem de informacao.
    * @return Uma div com a(s) mensagem(ns) de informacao ao usua'rio.<br/> 
    * Exemplo: <br/>
    * <i>Sua senha expira em X dias.</i>
    * 
    */
    public static StringBuffer montaMensagemInformacao(String dsInformacao){
        
        StringBuffer sb = new StringBuffer();
        
        sb.append("<ul class='informacao'>");
        sb.append("<li>");
        sb.append(dsInformacao);
        sb.append("</li>");
        sb.append("</ul>");
        
        return sb;
        
    }
    
    public static StringBuffer montaMensagemInformacao(InformacaoVO informacao){
        
        StringBuffer sb = new StringBuffer();
        
        sb.append("<ul class='informacao'>");
        sb.append("<li>");
        sb.append(informacao.getDsInformacao().toString());
        sb.append("</li>");
        sb.append("</ul>");

        System.out.println(sb);
        return sb;
        
    }

    /*
     public static boolean validaConfirmacao(String dsInformacao,
            ArrayList<InformacaoVO> listaMensagensInformacao)
    
    {
        
        if((!InformacaoVO.verificaSeInformacaoEstaNulaOuVazia(dsInformacao))&&
                !InformacaoVO.verificaSeInformacaoJaExisteNaListaInformacao
                (dsInformacao, listaMensagensInformacao))
        {
            
            return true;
            
        }else{
            
            return false;
            
        }
        
    }
    
    protected static boolean verificaSeInformacaoJaExisteNaListaInformacao(String dsInformacao, 
                ArrayList<InformacaoVO> listaMensagensExecucao){
        
        InformacaoVO novaInformacao = new InformacaoVO();
        
        boolean informacaoEncontrada = false;
        
        novaInformacao.setDsInformacao(dsInformacao);
        
        for(int i = 0; i < listaMensagensExecucao.size(); i++){
            
            InformacaoVO informacaoExistente = listaMensagensExecucao.get(i);
            
            if(novaInformacao.getDsInformacao().equals(informacaoExistente.getDsInformacao())){
                
                informacaoEncontrada = true;
                
                break;        
                
            }
            
            if(!informacaoEncontrada){
                
                return false;
                
            }
                
        }
        
        return true;
            
    }
    
    public static boolean validaInformacao(String dsInformacao, 
            ArrayList<ConfirmacaoVO> listaMensagensInformacao)
    
    {
        
        if((!ConfirmacaoVO.verificaSeConfirmacaoEstaNulaOuVazia(dsInformacao))&&
                !ConfirmacaoVO.verificaSeConfirmacaoJaExisteNaListaConfirmacao
                (dsInformacao, listaMensagensInformacao))
        {
            
            return true;
            
        }else{
            
            return false;
            
        }
        
    }
     
    */
    
    public static boolean verificaSeInformacaoEstaNulaOuVazia(String dsInformacao){
        
        if((dsInformacao == null) || (dsInformacao.trim().length() == 0)){
            
        return true;
            
        }
        
        return false;
        
    }

    public String getDsInformacao() {
        return dsInformacao;
    }

    public void setDsInformacao(String dsInformacao) {
        this.dsInformacao = dsInformacao;
    }
    
    

}
